home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Floppyshop 2
/
Floppyshop - 2.zip
/
Floppyshop - 2.iso
/
art&graf.ix
/
art-0039
/
source
/
m2conv.mod
< prev
next >
Wrap
Text File
|
1997-04-16
|
3KB
|
132 lines
IMPLEMENTATION MODULE M2Conv;
(* based on the SmallIO module from HiSoft FLT Compiler LGM *)
IMPORT Conversions;
FROM Strings IMPORT Delete;
CONST MaxDepth=3;
VAR i:INTEGER;
ch:CHAR;
PROCEDURE SkipBlanks( VAR s : ARRAY OF CHAR );
VAR i, len : INTEGER;
BEGIN
i := 0;
len := SHORT(HIGH(s));
WHILE ( i <= len )
AND ( s[i] <= ' ' ) DO
INC(i);
END;
IF i > len THEN i := len ; END;
Delete(s,0,i);
END SkipBlanks;
PROCEDURE Output(Text:ARRAY OF CHAR;used:INTEGER;places:CARDINAL; fill : CHAR;
VAR OutStr : ARRAY OF CHAR; );
VAR j : INTEGER;
BEGIN
FOR j := 0 TO SHORT(HIGH(OutStr)) DO OutStr[j] := 0C; END;
j := 0;
FOR i:=used+1 TO INTEGER(places) DO
OutStr[j] := fill;
INC(j);
END;
FOR i:=SHORT(LONGINT(HIGH(Text)))+1-used TO SHORT(LONGINT(HIGH(Text))) DO
OutStr[j] := Text[i];
INC(j);
END;
END Output;
PROCEDURE ConvToLongcard( s : ARRAY OF CHAR;) : LONGCARD;
VAR i, len :INTEGER;
c : LONGCARD;
BEGIN
len := SHORT(HIGH(s));
i := 0;
c:=0;
SkipBlanks(s);
i := 0;
WHILE (s[i]>='0') AND (s[i]<='9') AND (i <= len ) DO
c:=10*c+(ORD(s[i])-ORD('0'));
INC(i);
END;(*WHILE*)
RETURN c;
END ConvToLongcard;
PROCEDURE ConvToCard( s : ARRAY OF CHAR ) : CARDINAL;
VAR lc : LONGCARD;
BEGIN
lc := ConvToLongcard(s);
RETURN SHORT(lc);
END ConvToCard;
PROCEDURE ConvToInt( s : ARRAY OF CHAR ) : INTEGER;
VAR li : LONGINT;
BEGIN
li := ConvToLongint(s);
RETURN SHORT(li);
END ConvToInt;
PROCEDURE ConvToLongint( s : ARRAY OF CHAR; ) : LONGINT;
VAR neg:BOOLEAN;
i :INTEGER;
x :LONGINT;
BEGIN
SkipBlanks(s);
neg:=FALSE;
i := 0;
IF s[i]='-' THEN neg:=TRUE; END;
IF (s[i]='-') OR (s[i]='+') THEN INC(i) END;
x:=0;
WHILE (s[i]>='0') AND (s[i]<='9') DO
x:=10*x+(ORD(s[i])-ORD('0'));
INC(i);
END;(*WHILE*)
IF neg THEN x:=-x END;
RETURN x;
END ConvToLongint;
PROCEDURE WriteCardInGivenBase(c:LONGCARD;base:CARDINAL;places:CARDINAL;
zerosuppress:BOOLEAN; VAR s : ARRAY OF CHAR);
VAR
used:INTEGER;
ch : CHAR;
BEGIN
Conversions.CardToString(c,base,s,used);
IF zerosuppress THEN ch:=' '
ELSE ch:='0' END;
Output(s,used,places,ch,s);
END WriteCardInGivenBase;
PROCEDURE CardToString(c:LONGCARD;places:CARDINAL; VAR s:ARRAY OF CHAR);
BEGIN
WriteCardInGivenBase(c,10,places,TRUE,s)
END CardToString;
PROCEDURE CardToHexString(c:LONGCARD;places:CARDINAL; VAR s:ARRAY OF CHAR);
BEGIN
WriteCardInGivenBase(c,16,places,FALSE,s)
END CardToHexString;
PROCEDURE CardToOctString(c:LONGCARD;places:CARDINAL; VAR s : ARRAY OF CHAR);
BEGIN
WriteCardInGivenBase(c,8,places,FALSE,s)
END CardToOctString;
PROCEDURE IntToString(c:LONGINT;places:CARDINAL;VAR s:ARRAY OF CHAR);
VAR
used:INTEGER;
BEGIN
Conversions.IntToString(c,10,s,used);
Output(s,used,places,' ',s);
END IntToString;
END M2Conv.